The communications and computer industries are rapidly changing to adjust to emerging technologies and ever increasing customer demand. This customer demand for new applications and increased performance of existing applications is driving communications network and system providers to employ networks and systems having greater speed and capacity (e.g., greater bandwidth). In trying to achieve these goals, a common approach taken by many communications providers is to use packet switching technology. Increasingly, public and private communications networks are being built and expanded using various packet technologies, such as Internet Protocol (IP).
A network device, such as a router, typically receives, processes, and forwards or discards a packet based on one or more criteria, including the type of protocol used by the packet, addresses of the packet (e.g., source, destination, group), and type or quality of service requested. Multicast packets that are received by a router are forwarded to multiple interfaces of the router based on the router multicast tables, as dictated by higher-level protocols, such as Internet Group Membership Protocol (IGMP), etc.
For certain network protocols, such as Ethernet, each network interface of the router or computer system has a different media access address (MAC address) assigned to it. Packets sent from a particular network interface then use the MAC address assigned to the network interface as the source address of the packet. Thus, when data corresponding to a multicast packet is to be sent out multiple interfaces, currently different multicast packets (e.g., Ethernet packets) must be generated, with each of these packets including the address of the corresponding network interface as the packet's source address.
Known approaches to generate these multiple packets include rewriting of the MAC source by the hardware; splitting the packet into two parts and having a different header allocated and common data and then chaining the two together upon transmission to the network interfaces; serializing the output of the packets among interfaces and rewriting the header before sending the packet on each interface; and creating a new packet for each interface with the interface's MAC source address. However, some of these approaches require specialized hardware and software, and can be resource (e.g., processor hardware and/or memory) intensive.